Traditional servers are usually relegated to centralized locations, such as server rooms having tens, hundreds, or thousands of computers maintained by grid computing providers. Such centralized resources enable their maintenance to be easily accomplished. For instance, network and other administrators are able to ensure that these resources are located in an environmentally suitable environment, with respect to temperature, humidity, and so on. Furthermore, power back-up facilities can easily be provided to centralized resources, in case the primary electrical power to the resources is temporarily disrupted. Should problems develop, technicians are usually located on-site, or a short distance away, to fix the problems in a timely manner. Even if a lengthy power outage occurs, technicians can usually maintain the servers for long periods of time, due to back-up power facilities.
However, the popularity of the Internet, as well as the availability of powerful computers and high-speed network technologies as low-cost commodity components is changing the way computers are used. These technology opportunities have led to the possibility of using distributed computers as a single, unified computing resource, leading to what is commonly referred to as grid computing. The term grid has been chosen as an analogy to a power grid that provides consistent, pervasive, dependable, and transparent access to electricity irrespective of its source.
A computational grid enables the sharing, selection, and aggregation of a wide variety of computational resources, including supercomputers, storage systems, data sources, and specialized devices that are geographically distributed and potentially owned by different organizations, for solving large-scale computation and data-intensive problems in science, engineering, and commerce, among other problem domains. A computational grid may be viewed as a seamless, integrated computational and collaborative environment. Users and client devices interact with the grid resource broker to solve problems, which in turn performs resource discovery, scheduling, and the processing of application jobs on the distributed grid resources. From the end-user point of view, computational grids can be used to provide services such as computational services, data services, and application services.
Organizations have looked to leveraging all of their resources to deploy within computational grids. For example, large corporations typically have thousands of computers deployed worldwide for their employees. These computers can include desktop computers as well as laptop, or notebook, computers. Except when running the most intensive computational applications, which is infrequent, most of these computers sit mostly idle during the workday. Common tasks such as word processing, Internet access, and email require only a small amount of the computational power that the computers are capable of providing. Furthermore, when employees go home for the day or for the week, their computers usually sit completely idle, their computational power wasted.
Organizations have thus attempted to harness these distributed resources into computational grids, to leverage all of their computing assets for computationally intensive tasks. However, including desktop and laptop computers primarily intended for end-user usage into computational grids can be problematic. Unlike computing resources located in a centralized location, end-user computing devices are more likely not to be located in an environmentally controlled environment. Should a computer be accidentally turned off, or if a computer loses its external power connection, its connection to the computational grid may be severed. While such complications can be easily handled within a data center having thousands of server computers and on-site technicians dedicated to ensure their uptime, when these problems occur for end-user computers a technician may not be able to be immediately dispatched to solve them.
As a result, harnessing desktop and laptop computers primarily intended for end-user usage into computational grids may result in decreased reliability of the computational grids. For example, if external power that enables these computers to run is lost for an extended period of time, the computational grid encompassing the computers loses their computational power. Furthermore, even when external power is re-supplied to the computers, there is no facility for restarting them and for the computers to resume their grid computing tasks. For organizations that have thousands of computers, this may require technicians to be dispatched to individually turn each computer back on and ensure that it has resumed its grid computing tasks. However, such a solution is time-consuming and costly.
That is, within grid computing, even a client computing device, like a laptop, notebook, or desktop computer, can become a component of the computational grid. However, the grid is presumed to be available at any time, which means that the client computing devices need to be available at any time to run or continue a computational grid task sent by a broker of the grid, even if a power outage occurs. Notebook or laptop computers, due to their inclusion of internal power sources like batteries, and desktop computers to which uninterruptible power supplies (UPS's) are attached, are thus able to function within a grid, since their batteries provide back-up power should a power outage occur. However, if the batteries become exhausted during a long power outage, these computers will not be able to continue a grid task.